package com.shuoyue.ycgk.utils;

import android.content.Context;
import android.widget.TextView;

import com.shuoyue.ycgk.R;
import com.zzhoujay.richtext.ImageHolder;
import com.zzhoujay.richtext.RichText;
import com.zzhoujay.richtext.callback.ImageFixCallback;
import com.zzhoujay.richtext.callback.OnImageClickListener;

public class MyRichTextHelper {
    public static void showRich(Context context, String text, TextView view, boolean clicable) {
        RichText.from(text).bind(context)
                .scaleType(ImageHolder.ScaleType.FIT_XY) // 图片缩放方式
//                .resetSize(true)
//                .autoFix(false)

                .clickable(clicable)
                .fix(new MyRichTextImgFix(context))
//                .size(ImageHolder.WRAP_CONTENT, ImageHolder.WRAP_CONTENT) // 图片占位区域的宽高
                .into(view);
    }

    public static void showRich(Context context, String text, TextView view) {
        RichText.from(text).bind(context)
                .scaleType(ImageHolder.ScaleType.FIT_XY) // 图片缩放方式
//                .resetSize(true)
//                .autoFix(false)

//                .clickable(true)
                .fix(new MyRichTextImgFix(context))
//                .size(ImageHolder.WRAP_CONTENT, ImageHolder.WRAP_CONTENT) // 图片占位区域的宽高
                .into(view);
    }

    public static void showRich(Context context, String text, TextView view, OnImageClickListener imageClickListener) {
        RichText.from(text).bind(context)
                .scaleType(ImageHolder.ScaleType.FIT_XY) // 图片缩放方式
                .resetSize(false)
                .autoFix(false)
                .imageClick(imageClickListener)
                .clickable(true)
                .fix(new MyRichTextImgFix(context))
                .size(ImageHolder.WRAP_CONTENT, ImageHolder.WRAP_CONTENT) // 图片占位区域的宽高
                .into(view);
    }
}

class MyRichTextImgFix implements ImageFixCallback {

    Context mContext;

    public MyRichTextImgFix(Context mContext) {
        this.mContext = mContext;
    }

    /**
     * 加载开始前
     *
     * @param holder ImageHolder
     */
    @Override
    public void onInit(ImageHolder holder) {

    }

    /**
     * 正在加载，此时设置holder的宽高将会运用到placeholder
     *
     * @param holder ImageHolder
     */
    @Override
    public void onLoading(ImageHolder holder) {

    }

    /**
     * 图片下载完成（未加载到内存）并且尺寸已获取，此时给holder设置最大宽高为图片加载到内存后的最大宽高，用与压缩图片
     *
     * @param holder      ImageHolder
     * @param imageWidth  图片原始宽度
     * @param imageHeight 图片原始高度
     * @param sizeHolder  修改sizeHolder来改变图片的大小
     */
    @Override
    public void onSizeReady(ImageHolder holder, int imageWidth, int imageHeight, ImageHolder.SizeHolder sizeHolder) {

    }

    /**
     * 图片已加载到内存，此时给holder设置宽高将是最后图片显示的大小
     *
     * @param holder ImageHolder
     * @param width  图片加载到内存后的宽度
     * @param height 图片加载到内存后的高度
     */
    @Override
    public void onImageReady(ImageHolder holder, int width, int height) {
        int screenWidth = SizeUtil.getScreenWidth(mContext);
        int minHeight = SizeUtil.dip2px(mContext, 28);
        if (height < minHeight) { //图片小于40dp的,高度提高到40dp
            holder.setHeight(minHeight);
            float scal = (float) minHeight / (float) height;
            holder.setWidth((int) ((float) width * scal));
        }
    }

    /**
     * 图片加载失败，此时设置holder的宽高将会运用到errorImage
     *
     * @param holder ImageHolder
     * @param e      Exception
     */
    @Override
    public void onFailure(ImageHolder holder, Exception e) {

    }
}